import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import javax.imageio.stream.ImageOutputStream;
public class CompressImage {

    public static void main(String[] args) throws IOException{

        File input = new File("C:\\wallpapers\\image.jpg");
        BufferedImage image = ImageIO.read(input);

        File compressedimagefile  = new File("C:\\Users\\Deepak\\compress.jpg");
        OutputStream os = new FileOutputStream(compressedimagefile);

        Iterator<ImageWriter>writers = ImageIO.getImageWritersByFormatName("jpg");
        ImageWriter writer = (ImageWriter) writers.next();

        ImageOutputStream ios = ImageIO.createImageOutputStream(os);
        writer.setOutput(ios);

        ImageWriteParam param = writer.getDefaultWriteParam();

        param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        param.setCompressionQuality(0.03f);
        writer.write(null,new IIOImage(image,null,null),param);

        os.close();
        ios.close();
        writer.dispose();
}
}